package com.jsb.laundry.common.design_service.pay.strategy;

import com.jsb.laundry.common.design_service.pay.PayStrategy;
import org.springframework.stereotype.Service;

/**
 * 环境类,持有一个策略对象的引用,并根据不同的情况选择不同的策略执行
 *
 */
@Service
public class PayContext {
    /**
     * 把策略对象通过构造器注入
     */
    private PayStrategy payStrategy;

    public PayContext(PayStrategy payStrategy) {
        this.payStrategy = payStrategy;
    }

    /**
     * 切换不同的策略对象
     */
    public void setPayStrategy(PayStrategy payStrategy) {
        this.payStrategy = payStrategy;
    }

    /**
     * TODO 用于执行具体策略对象的算法
     */
    public String pay(String userId, String payId, int total, String attach){
        return payStrategy.pay(userId,payId,total,attach);
    }


}
